import pandas as pd
import numpy as np
#具体流程
#1.清洗数据
#2.构造新表
#3.运行
test0 = pd.DataFrame(columns=['body','customer','cost','cash','count','offline','online'])
test1 = pd.read_excel('tryfirst.xlsx',names=test0) #在这里把文件名改成你想要的文件名
#将空缺列全部标记为0
test1.fillna(0, inplace = True)
#将网送出标记为0
test1['cost'].replace('网送出',0,inplace=True)
#设置一个集合，将test1进行匹配
test2 = set(test1.offline)|set(test1.online)
#将customer（客户） 列和offlinex（线下客户）列online（线上客户）列进行比对，但凡出现 就记做1 没出现记做0,写在count上
test1['count']=test1['customer'].apply(lambda x:1 if x in test2 else 0)
#将1标记为不符合
test1['count'].replace(1,'不符合',inplace=True)
#将0标记为符合
test1['count'].replace(0,'符合',inplace=True)
#将test1 的cost cash数据文本格式转换成数据格式
test1["cost"] = test1["cost"].astype("float")
test1["cash"] = test1["cash"].astype("float")
#把不符合的和符合的都找出来，不符合的另存为一个文件 符合的继续往下搞
test3 = test1.loc[test1['count'].isin(['不符合'])]
test3.to_excel('不符合学员.xlsx',index=False)
test1 = test1.loc[test1['count'].isin(['符合'])]
#在表1中的所有销售内容的合的0.15倍,可以改成其他的倍数
test1["cash"] = test1["cost"] * 0.15
#重新组织一个新表使数据汇总
test4 = test1.groupby(['body'])['cash'].sum()
test5 = test4.reset_index()
test6 = pd.DataFrame(columns=['奖金部分1','奖金部分2','总计'])
#整合标题到test7内
test7 = pd.concat([test5,test6],axis=1)
#将test7的空缺值用0填充
test7.fillna(0, inplace = True)
#重命名下整个表
test8 = ['销售姓名','提成部分','奖金部分1','奖金部分2','总计']
#合并表头
test7.columns = test8
#创建一个奖金表，平时用不到
#test9 = pd.read_excel('等级明细.xlsx')
#test10 = set(test9['一等'])
#test11 = set(test9['二等'])
#一等奖金匹配
test7['奖金部分1']=test7['销售姓名'].apply(lambda x:200 if x in test10 else 0)
#二等奖金匹配
test7['奖金部分2']=test7['销售姓名'].apply(lambda x:100 if x in test11 else 0)
#数据全部存为float文件好进行加减
test7 = test7.astype({'奖金部分1':np.float64,'奖金部分2':np.float64,'总计':np.float64})
#求总计
test7['总计'] = test7.apply(lambda x: x['提成部分'] + x['奖金部分1']+ x['奖金部分2'], axis=1)
print(test7)
#横向汇总
print('———————'*10)
print("已将销售数据汇总完毕，文件保存为'销售明细.xlsx'。请您打开当前执行文件所在文件夹进行查看")
print("已将不符合人员名单标记，并存为'不符合学员.xlsx'。请您打开当前执行文件所在文件夹进行查看")
#保存表7
test7.to_excel("销售明细.xlsx",index=False)





